package ar.com.gestion.ventas;

import java.util.LinkedList;

import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import ar.com.gestion.dominio.Producto;
import ar.com.gestion.dominio.Vendedor;
import ar.com.gestion.tabla.ControlTabla;
import ar.com.gestion.tabla.ModeloTabla;

public class ModuloVentas {

	private JList lista;
	private JTable tabla;
	private LinkedList<Producto> listaAVender;
	private ControlTabla controlTabla;
	private JTextField precioTotal;
	private Vendedor vendedor;

	public ModuloVentas() {
		precioTotal = new JTextField();
		lista = new JList();
		tabla = new JTable();
		listaAVender = new LinkedList<Producto>();
		controlTabla = new ControlTabla();

	}

	public void inicializar() {
	this.inicializarPrecioTotal();
	this.lista.removeAll();
	listaAVender.clear();
	this.refresTabla();
		
	}
	
	
	
	public void anhadirProductoALaLista() {

		Producto producto = this.getPruductoSeleccionadoTabla();

		if (producto.getCantidad() > 0) {
			producto.setCantidad(producto.getCantidad() - 1);
			this.agregarALista(producto);
			JTextField precioTotal = this.getPrecioTotal();

			float importeAnterior = Float.parseFloat(precioTotal.getText());
			precioTotal.setText(String.valueOf(importeAnterior
					+ producto.getPrecio()));
			listaAVender.add(producto);
		} else {

			JOptionPane.showMessageDialog(null, "No hay suficientes.");

		}

	}

	public Producto getPruductoSeleccionadoTabla() {

		ModeloTabla modeloTabla = (ModeloTabla) tabla.getModel();
		int selectedRow = tabla.getSelectedRow();
		Producto producto = modeloTabla.getRowAt(selectedRow);
		return producto;

	}

	public JList getLista() {
		return lista;
	}

	public void setLista(JList lista) {
		this.lista = lista;
	}

	public JTable getTabla() {
		return tabla;
	}

	public void setTabla(JTable tabla) {
		this.tabla = tabla;
	}

	public LinkedList<Producto> getListaAVender() {
		return listaAVender;
	}

	public void setListaAVender(LinkedList<Producto> listaAVender) {
		this.listaAVender = listaAVender;
	}
	
	public ModeloTabla getModeloTabla(){
		return (ModeloTabla)tabla.getModel();
	}

	public void eliminarSeleccionadoLista() {
		DefaultListModel listmodel = this.getDefaultListmodel();
		int index = this.getLista().getSelectedIndex();
		listmodel.remove(index);
		Producto producto = listaAVender.get(index);
		
		float precioViejo = Float.parseFloat(precioTotal.getText());
		int cantidad = producto.getCantidad();
		
		Producto productoActualizar = controlTabla.buscarProductoPorCodigo(producto.getCodigo());
		productoActualizar.setCantidad(productoActualizar.getCantidad()+1);
		precioTotal.setText(String.valueOf(precioViejo-producto.getPrecio()));
				
	
		
	}

	public void agregarALista(Producto producto) {

		DefaultListModel model = (DefaultListModel) lista.getModel();
		model.addElement(producto.getDescripcion());

	}

	public void refresTabla() {
		controlTabla.refresh();

	}

	public ControlTabla getControlTabla() {
		return controlTabla;
	}

	public void setControlTabla(ControlTabla controlTabla) {
		this.controlTabla = controlTabla;
	}

	public void refreshLista() {
		DefaultListModel modeloLista = (DefaultListModel) lista.getModel();
		modeloLista.removeAllElements();

	}

	public JTextField getPrecioTotal() {
		return precioTotal;
	}

	public void setPrecioTotal(JTextField precioTotal) {
		this.precioTotal = precioTotal;
	}

	public DefaultListModel getDefaultListmodel() {

		return (DefaultListModel) lista.getModel();
	}

	public void inicializarPrecioTotal() {
	precioTotal.setText("0");
		
	}

	public Vendedor getVendedor() {
		return vendedor;
	}

	public void setVendedor(Vendedor vendedor) {
		this.vendedor = vendedor;
	}


	
	

}
